The term platform as used in a computer context can refer to the type of processor and/or other hardware on which a given operating system or application program runs, the type of operating system on a computer or the combination of the type of hardware and the type of operating system running on that hardware. The terms cross-platform, multi-platform, or portable, can be used to describe operating systems and application programs that can run on more than one platform. Multi-platform operating systems can refer to operating systems that can be compiled or configured to run on multiple processor platforms. Multi-platform applications can refer to applications that can be compiled or configured to run on multiple processor platforms and/or multiple operating systems. In general, multi-platform software can be differentiated between platforms at compile time.
Applications or operating systems that are not multi-platform, in some instances, can be ported between platforms. Porting describes the development of a version of an application or an operating system originally designed for one platform such that the application or operating system can be used on other platforms. The portability of a software project can vary based on the differences between the origin and target platform. Porting a software project can involve changes to core program code, as well as libraries or applications associated with the program code. For example, if application programming interface (API) differences exist between platforms, some changes may be required to adapt the ported program to the API of the target platform. However, such changes may be difficult or time consuming for large codebases.